package com.tosee.process;

import com.tosee.exception.GeneriqueException;
import com.tosee.model.dto.AbstractDto;
import com.tosee.model.dto.CodeDto;
import com.tosee.model.dto.ListeCodeDto;
import com.tosee.model.dto.UserDto;

/**
 * Interface BP pour la gestion des utilisateurs
 * 
 * @author robint
 */
public interface IUserBusinessProcess {
    /**
     * Authentification d'un utilisateur
     * 
     * @param _abstractDto Le dto d'identification
     * @return un {@link UserDto}
     */
    UserDto authentifier(AbstractDto _abstractDto);

    /**
     * Methode de creation d'un utilisateur
     * 
     * @param userDto L'utilisateur à créer
     * @return L'identifiant de l'utilisateur
     * @throws GeneriqueException
     */
    Integer creerUtilisateur(UserDto userDto) throws GeneriqueException;

    /**
     * Methode d'abonnement d'un utilisateur à une série
     * 
     * @param _codeDto Le code portant les info utilisateur et le code de la série
     * @return <code>true</code> si ok, <code>false</code> sinon
     * @throws GeneriqueException
     */
    Boolean getAjouterAbonnementSerie(CodeDto _codeDto) throws GeneriqueException;

    /**
     * Methode d'ajout d'un épisode vu pour un user
     * 
     * @param _listeCode La liste des codes des épisodes vu
     * @return <code>true</code> si ok, <code>false</code> sinon
     * @throws GeneriqueException
     */
    Boolean ajouterEpisodeVu(ListeCodeDto _listeCode) throws GeneriqueException;

}
